/**********************************************************
 * ActionScript2 Editor 
 * Copyright (C) 2004  Peter Schreiber
 * 
 * http://www.asdt.org
 * http://sourceforge.net/projects/aseclipseplugin/
 *
 * This program is free software; 
 * you can redistribute it and/or modify it under the terms of 
 * the GNU General Public License as published by the 
 * Free Software Foundation; either version 2 of the License, 
 * or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License 
 * along with this program; if not, write to the 
 * Free Software Foundation, Inc., 
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 
 * 
 **********************************************************/
package ca.scotthyndman.as2haxe.dom.visitor;

import ca.scotthyndman.as2haxe.dom.ASArrayAccess;
import ca.scotthyndman.as2haxe.dom.ASArrayLiteral;
import ca.scotthyndman.as2haxe.dom.ASAssignment;
import ca.scotthyndman.as2haxe.dom.ASBlock;
import ca.scotthyndman.as2haxe.dom.ASBooleanLiteral;
import ca.scotthyndman.as2haxe.dom.ASBreakStatement;
import ca.scotthyndman.as2haxe.dom.ASCatchStatement;
import ca.scotthyndman.as2haxe.dom.ASComment;
import ca.scotthyndman.as2haxe.dom.ASConditionalExpression;
import ca.scotthyndman.as2haxe.dom.ASContinueStatement;
import ca.scotthyndman.as2haxe.dom.ASDoStatement;
import ca.scotthyndman.as2haxe.dom.ASExpressionStatement;
import ca.scotthyndman.as2haxe.dom.ASFieldAccess;
import ca.scotthyndman.as2haxe.dom.ASForInStatement;
import ca.scotthyndman.as2haxe.dom.ASForStatement;
import ca.scotthyndman.as2haxe.dom.ASFunction;
import ca.scotthyndman.as2haxe.dom.ASFunctionExpression;
import ca.scotthyndman.as2haxe.dom.ASIfStatement;
import ca.scotthyndman.as2haxe.dom.ASImportDeclaration;
import ca.scotthyndman.as2haxe.dom.ASInfixExpression;
import ca.scotthyndman.as2haxe.dom.ASInstanceOfExpression;
import ca.scotthyndman.as2haxe.dom.ASMethodInvocation;
import ca.scotthyndman.as2haxe.dom.ASName;
import ca.scotthyndman.as2haxe.dom.ASNewExpression;
import ca.scotthyndman.as2haxe.dom.ASNullLiteral;
import ca.scotthyndman.as2haxe.dom.ASNumberLiteral;
import ca.scotthyndman.as2haxe.dom.ASObjectLiteral;
import ca.scotthyndman.as2haxe.dom.ASObjectLiteralField;
import ca.scotthyndman.as2haxe.dom.ASPackage;
import ca.scotthyndman.as2haxe.dom.ASParenthesizedExpression;
import ca.scotthyndman.as2haxe.dom.ASPostfixExpression;
import ca.scotthyndman.as2haxe.dom.ASPrefixExpression;
import ca.scotthyndman.as2haxe.dom.ASPropertyDeclaration;
import ca.scotthyndman.as2haxe.dom.ASReturnStatement;
import ca.scotthyndman.as2haxe.dom.ASStringLiteral;
import ca.scotthyndman.as2haxe.dom.ASSwitchCase;
import ca.scotthyndman.as2haxe.dom.ASSwitchStatement;
import ca.scotthyndman.as2haxe.dom.ASThrowStatement;
import ca.scotthyndman.as2haxe.dom.ASTryStatement;
import ca.scotthyndman.as2haxe.dom.ASType;
import ca.scotthyndman.as2haxe.dom.ASTypeDeclaration;
import ca.scotthyndman.as2haxe.dom.ASUndefinedLiteral;
import ca.scotthyndman.as2haxe.dom.ASVariableDeclaration;
import ca.scotthyndman.as2haxe.dom.ASVariableDeclarationExpression;
import ca.scotthyndman.as2haxe.dom.ASVariableDeclarationStatement;
import ca.scotthyndman.as2haxe.dom.ASWhileStatement;
import ca.scotthyndman.as2haxe.dom.ASWithStatement;

/**
 * Interface to be implemented by classes that will perform DOM traversal.
 * 
 * @author Peter Schreiber
 */
public interface IVisitor {

	public boolean visit(ASArrayAccess type);

	public boolean visit(ASArrayLiteral type);

	public boolean visit(ASAssignment type);

	public boolean visit(ASBlock type);

	public boolean visit(ASBooleanLiteral type);

	public boolean visit(ASBreakStatement type);

	public boolean visit(ASCatchStatement type);

	public boolean visit(ASComment type);
	
	public boolean visit(ASConditionalExpression type);

	public boolean visit(ASContinueStatement type);

	public boolean visit(ASDoStatement type);

	public boolean visit(ASExpressionStatement type);

	public boolean visit(ASFieldAccess type);

	public boolean visit(ASForInStatement type);

	public boolean visit(ASForStatement type);

	public boolean visit(ASFunction type);

	public boolean visit(ASFunctionExpression type);

	public boolean visit(ASIfStatement type);

	public boolean visit(ASImportDeclaration type);

	public boolean visit(ASInfixExpression type);

	public boolean visit(ASInstanceOfExpression type);

	public boolean visit(ASMethodInvocation type);

	public boolean visit(ASName type);

	public boolean visit(ASNewExpression type);

	public boolean visit(ASNullLiteral type);

	public boolean visit(ASNumberLiteral type);

	public boolean visit(ASObjectLiteral type);

	public boolean visit(ASObjectLiteralField type);

	public boolean visit(ASPackage type);

	public boolean visit(ASParenthesizedExpression type);

	public boolean visit(ASPostfixExpression type);

	public boolean visit(ASPrefixExpression type);

	public boolean visit(ASPropertyDeclaration type);

	public boolean visit(ASReturnStatement type);

	public boolean visit(ASStringLiteral type);

	public boolean visit(ASSwitchCase type);

	public boolean visit(ASSwitchStatement type);

	public boolean visit(ASThrowStatement type);

	public boolean visit(ASTryStatement type);

	public boolean visit(ASType type);
	
	public boolean visit(ASTypeDeclaration type);

	public boolean visit(ASUndefinedLiteral type);

	public boolean visit(ASVariableDeclaration type);

	public boolean visit(ASVariableDeclarationExpression type);

	public boolean visit(ASVariableDeclarationStatement type);

	public boolean visit(ASWhileStatement type);

	public boolean visit(ASWithStatement type);

	public boolean visit(IVisitable type);

}
